package com.tasklist.controller;

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.tasklist.model.Atividade;
import com.tasklist.util.HibernateUtil;

@ManagedBean (name = "atividadeBean")
@SessionScoped
public class AtividadeController {
	private Atividade atividade = new Atividade();
	private List<Atividade> listaAtividades = inserirNaTabela();
	private Session sessao;
	private Transaction transacao;
	
	public String MarcarAtividade(){
		
			if(atividade.getImagem().equals("imgs/unchecked.jpg")){
				atividade.setImagem("imgs/checked.jpg");
				
			}
			else{
				atividade.setImagem("imgs/unchecked.jpg");
				
			}
			
			
			abreConexao();
			
			sessao.update(atividade);
			
			atividade = new Atividade();
			fechaConexao();
			listaAtividades = inserirNaTabela();
			
			
			
		return "atualizar";
	}
	
	
	public String cadastrarAtividade() {
		abreConexao();
		sessao.save(atividade);
		listaAtividades = inserirNaTabela();
		atividade = new Atividade();
		fechaConexao();
		return "atualizar";
	}
	
	public String deletarAtividade(){
		abreConexao();
		sessao.delete(atividade);
		listaAtividades = inserirNaTabela();
		atividade = new Atividade();
		fechaConexao();
		return "/index.xhtml";
	}
	
	@SuppressWarnings("unchecked")
	public List<Atividade> inserirNaTabela() {
		List<Atividade> lista = new ArrayList<Atividade>();
		abreConexao();
		String hql = "FROM atividade";
		Query query = sessao.createQuery(hql);
		lista = query.list();
		return lista;
			
	}
	
	public void abreConexao() {
		this.sessao = HibernateUtil.getSession().getCurrentSession();
		this.transacao = sessao.beginTransaction();
	}

	public void fechaConexao() {
		this.transacao.commit();
		
		try {
			if(this.sessao.isOpen()){
				this.sessao.close();
			}
		} catch (Exception e) {
			System.out.println("Deu problema no fechamento da conexao" + e.getMessage());
		}
	}
	
	public Atividade getAtividade() {
		return atividade;
	}

	public void setAtividade(Atividade atividade) {
		this.atividade = atividade;
	}

	public List<Atividade> getListaAtividades() {
		return listaAtividades;
	}

	public void setListaAtividades(List<Atividade> listaAtividades) {
		this.listaAtividades = listaAtividades;
	}
	
	
}
